package com.hoshiibuy.fileServer.model;

import java.io.Serializable;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 创建存储空间的POJO参数类
 * 
 * @author Mr.wu
 *
 */
@Data
@ApiModel("创建存储空间参数")
public class CreateBucketRequest implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 名称
	 */
	@ApiModelProperty(value = "存储空间名称", required = true)
	private String name;

	/**
	 * 访问控制列表
	 */
	@ApiModelProperty(value = "访问控制列表，预留参数")
	private String accessControl;

	/**
	 * 所属区域
	 */
	@ApiModelProperty(value = "存储空间所属区域", required = true)
	private String location;

	/**
	 * 配额 存储空间配额值必须为非负整数，华为云单位为字节，支持的最大值为2的63次方 - 1。 接口上限为1024*1024*100MB,即100TB
	 */
	@ApiModelProperty(value = "存储空间配额，值必须为非负整数，单位为MB，支持的最大值为1024*1024*100", required = true, example = "1024")
	@Min(1)
	@Max(1024 * 1024 * 100)
	private int quota;

	/**
	 * 存储类别 标准存储访问时延低和吞吐量高，因而适用于有大量热点文件（平均一个月多次）或小文件（小于1MB），且需要频繁访问数据的业务场景，
	 * 例如：大数据、移动应用、热点视频、社交图片等场景。 低频访问存储适用于不频繁访问（平均一年少于12次）但在需要时也要求快速访问数据的业务场景，
	 * 例如：文件同步/共享、企业备份等场景。与标准存储相比，低频访问存储有相同的数据持久性、吞吐量以及访问时延， 且成本较低，但是可用性略低于标准存储。
	 * 归档存储适用于很少访问（平均一年访问一次）数据的业务场景，例如：数据归档、长期备份等场景。 归档存储安全、持久且成本极低，可以用来替代磁带库。
	 * 为了保持成本低廉，数据取回时间可能长达数分钟到数小时不等。
	 */
	@ApiModelProperty(value = "存储类别，预留参数，默认类别为标准存储")
	private String storageType;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAccessControl() {
		return accessControl;
	}

	public void setAccessControl(String accessControl) {
		this.accessControl = accessControl;
	}

	public String getLocation() {
		return location;
	}

	public void setLocation(String location) {
		this.location = location;
	}

	public int getQuota() {
		return quota;
	}

	public void setQuota(int quota) {
		this.quota = quota;
	}

	public String getStorageType() {
		return storageType;
	}

	public void setStorageType(String storageType) {
		this.storageType = storageType;
	}

	@Override
	public String toString() {
		return "CreateBucketParam [name=" + name + ", accessControl=" + accessControl + ", location=" + location
				+ ", quota=" + quota + ", storageType=" + storageType + "]";
	}

}
